import {ElMessage} from 'element-plus';
import {userStore} from '@/stores/disk/user';

// 创建一个WebSocket连接到Netty服务器
export function connectToNettyServer(userId,chatStor) {
    const userStor=userStore();
    const url=`ws://localhost:9001/ws`;
    // const url=`ws://192.168.71.130:10001/ws`;
    var socket = new WebSocket(url);

    // 连接打开时的回调函数
    socket.onopen = function() {
        // console.log("WebSocket连接已打开");
        ElMessage.success('聊天服务器连接成功');
        // 发送token
        const jsonToken = JSON.stringify({ type: 'user_Id', userId: userId});
        socket.send(jsonToken);
    };

    // 收到消息时的回调函数
    socket.onmessage = function(event) {
        const data = JSON.parse(event.data);
        if (data.type === 'contact-add-finish') {
            // 联系人添加完成，刷新联系人列表
            chatStor.getContacts();
            ElMessage.success('有一名新联系人添加成功');
            return;
        }
        
        //用户互发消息
        const userId= parseInt(localStorage.getItem('userId'))
        const message={
            id: data.id,
            contactId: chatStor.state.currentContact.id,
            avatar: data.senderId === userId ? userStor.state.userInfo.avatar : chatStor.state.currentContact.avatar,
            sender: data.senderId ===userId  ? 'me' : 'other',
            text: data.content,
            time: new Date().toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' })
        }
        chatStor.addMessage(message);
        chatStor.getContacts();
    };

    // 连接关闭时的回调函数
    socket.onclose = function() {
        // console.log("WebSocket连接已关闭");
    };

    // 发生错误时的回调函数
    socket.onerror = (error) => {
        ElMessage.error("聊天服务器异常,请联系管理员");
        console.error("WebSocket错误: " + error);
    };

    // 返回WebSocket实例，以便在其他地方调用其方法
    return socket;
}

